Generation of Images Based on Orientation

ABSTRACT

An image sensor can have a first orientation. If the first orientation differs from a second orientation, values can be read from the image sensor in a manner so as to generate image data having the second orientation.

BACKGROUND

With the popularity of computing devices, digital communication isbecoming common. Some devices, such as smart phones, have cameras thatallow a user to conduct video calls with other users. Manufacturers ofthese devices are challenged with enabling consumer-friendly usage ofthese devices. For example, enabling devices to perform hassle-freevideo conferencing irrespective of user actions may be desired.

BRIEF DESCRIPTION OF DRAWINGS

The following detailed description refers to the drawings, wherein:

FIG. 1 is a block diagram illustrating a computing device including acamera and a controller to generate image data, according to an example.

FIG. 2 is a depiction of different orientations of an image, accordingto an example.

FIG. 3 is a depiction of a sensor matrix, a controller, and a memory,according to an example.

FIG. 4 is a depiction of a sensor matrix, according to an example.

FIG. 5 is a depiction of a sample use case relating to devices andmethods disclosed herein, according to an example.

FIG. 6 is a flowchart illustrating aspects of a method for sensing animage, according to an example.

FIG. 7 is a flowchart illustrating aspects of a method for conducting acommunication session with another device, according to an example.

FIG. 8 is a flowchart illustrating aspects of a method for setting andupdating an orientation received from another device, according to anexample.

FIG. 9 is a block diagram illustrating a computing device including amachine-readable storage medium encoded with instructions to generateimage data, according to an example.

DETAILED DESCRIPTION

Manufacturers of computing devices, such as smart phones, tablet andslate computers, laptop computers, and the like, are challenged withenabling consumer friendly usage of these devices. Furthermore, asdigital communication, such as video calling, is becoming more common,users are coming to expect hassle-free communication using theircomputing devices. As described in detail below, various exampleembodiments relate to image transfer techniques that enable easy,hassle-free communication between devices.

For example, during a video call, two communication devices with camerasmay be oriented in portrait mode. If one of the users subsequentlyorients his communication device to landscape mode, a complication canarise because the camera of that device is then also oriented inlandscape mode. As a result, an image transferred to the other devicemay in turn be oriented in landscape mode. If the situation is leftundetected, when the receiving device, which is still in portraitorientation, displays the image, the image may appear sideways relativeto the user of the receiving device, resulting in a poor userexperience.

According to an example embodiment, however, the sending device candetect that the camera is in an unexpected orientation and can generatean image according to the expected orientation even though the camera isin an unexpected orientation. Furthermore, the sending device cangenerate the image so that the image has an aspect ratio expected by thereceiving device. As a result, the receiving device can receive an imagein an expected orientation with an expected aspect ratio even despite achange of orientation and aspect ratio by the sending device.

There may be many advantages to such an embodiment. For instance, as apreliminary matter, correctly oriented images may be provided to areceiving device despite changes in orientation by the sending device.This can result in a smooth, fluid, user-friendly video call betweenusers of similar or disparate communication devices. Second, due to thechange in aspect ratio, more of the screen real estate of the seconddevice may be used during the video conversation, as opposed todisplaying the entire landscape oriented image in a smaller display areaof the portrait-oriented receiving device, for example. Moreover, thesebenefits can be achieved even if the receiving device does not have thegraphic processing capability to evaluate incoming image data and alterit so that the underlying image is displayed in a suitable fashion.

Other benefits relate to a reduction in data needed to be sent to thereceiving device. For example, image orientation information need not besent along with every image since the sent images may be alreadyoriented according to the orientation expected by the receiving device.Additionally, the amount of image data transferred to the receivingdevice may be reduced due to the change in aspect ratio (and,concomitantly, change in resolution) on the sending side. Furtherdetails of this embodiment and associated advantages, as well as ofother embodiments and applications, will be discussed in more detailbelow with reference to the drawings.

Referring now to the drawings, FIG. 1 is a block diagram illustrating anembodiment of a computing device 100 including a camera 110, anorientation determiner 120, a communication interface 130, and acontroller 140. Computing device 100 may be any of a variety ofcomputing devices. For example, computing device 100 may be a cellulartelephone, a smart phone, a tablet or slate computer, a laptop computer,or a desktop computer, among others.

Computing device 100 may include a camera. Camera 110 may be a digitalcamera integrated into computing device 100, attached thereto, orintegrated into or attached to a monitor associated with computingdevice 100. Camera 110 may be or include an image sensor. For example,the image sensor may be a charge coupled device (CCD) image sensor or acomplementary metal oxide semiconductor (CMOS) image sensor.

Camera 110 (or the image sensor) may include a sensor matrix 112. Sensormatrix 112 may include multiple sensor elements for sensing an image.These sensor elements may be photodetectors/photosensors, which candetect/sense light and convert the light to an electrical signal. Thesensor elements can be arranged in matrix formation and may constitute aphotoactive region of the camera. The value in each sensor element mayrepresent a pixel in an ultimate image. An example sensor matrix isdescribed in more detail below with reference to FIGS. 2 and 3.

Camera 110 may be used for snapping still images or for capturing videoimage frames. Camera 110 may include a processor, such as a digitalsignal processor, but may also be controlled by a separate processor incomputing device 100 (e.g., controller 140).

Orientation determiner 120 may include a sensor configured to sense anorientation of computing device 100, of camera 110, and/or of a displayassociated with computing device 100. For example, orientationdeterminer 120 may include an accelerometer. A current reading or valuefrom the accelerometer may be used to determine orientation. Suchorientation could then be used to imply the orientation of an imagesensed by camera 110. Other sensors suitable for detecting orientationmay also be used.

Alternatively, or in addition to such a sensor, orientation determiner120 may include logic, such as machine-readable instructions, fordetecting and recognizing objects in an image represented by image data,and determining the orientation of the objects. Thus, for example,facial recognition techniques may be used to infer the orientation of animage sensed by camera 110. The orientation of the image may beindicative of the orientation of the camera 110. Determining orientationin this manner, though, may involve some preprocessing of the imagesensed by camera 110.

Orientation determiner may be implemented using controller 140, using adigital signal processor of camera 110, or using another processor, incombination with instructions stored in memory.

Images or video image frames (referred to below as “images”) generatedby camera 110 may be transmitted to another computing device viacommunication interface 130. Communication interface 130 may include,for example, a transmitter that may convert electronic signals to radiofrequency (RF) signals and/or a receiver that may convert RF signals toelectronic signals. Alternatively, communication interface 130 mayinclude a transceiver to perform functions of both the transmitter andreceiver. Communication interface 130 may further include or connect toan antenna assembly to transmit and receive the RF signals over the air.Communication interface 130 may communicate with a network, such as awireless network, a cellular network, a local area network, a wide areanetwork, a telephone network, an intranet, the Internet, or acombination thereof. Additionally, communication interface 130 mayinclude an Ethernet connection or other direct connection to a network.

Computing device 100 may include controller 140 having image generationmodule 142. In one example, image generation module 142 may read valuesfrom sensor matrix 112 in a manner so as to generate image data having asecond orientation if the second orientation is different from a firstorientation (e.g., the current orientation) of camera 110. In anotherexample, image generation module 142 may read values from sensor matrix112 in a first manner if the second orientation is the same as the firstorientation and in a second manner if the second orientation isdifferent from the first orientation.

Controller 140 may include a processor and a memory for implementingimage generation module 142. The processor may include at least onecentral processing unit (CPU), at least one semiconductor-basedmicroprocessor, at least one digital signal processor (DSP) such as adigital image processing unit, other hardware devices or processingelements suitable to retrieve and execute instructions stored in memory,or combinations thereof. The processor can include single or multiplecores on a chip, multiple cores across multiple chips, multiple coresacross multiple devices, or combinations thereof. The processor mayfetch, decode, and execute instructions from memory to perform variousfunctions, such as generating, processing, and transmitting image data.As an alternative or in addition to retrieving and executinginstructions, the processor may include at least one integrated circuit(IC), other control logic, other electronic circuits, or combinationsthereof that include a number of electronic components for performingvarious tasks or functions.

Controller 140 may include memory, such as a machine-readable storagemedium. The machine-readable storage medium may be any electronic,magnetic, optical, or other physical storage device that contains orstores executable instructions. Thus, the machine-readable storagemedium may comprise, for example, various Random Access Memory (RAM),Read Only Memory (ROM), flash memory, and combinations thereof. Forexample, the machine-readable medium may include a Non-Volatile RandomAccess Memory (NVRAM), an Electrically Erasable Programmable Read-OnlyMemory (EEPROM), a storage drive, a NAND flash memory, and the like.Further, the machine-readable storage medium can be computer-readableand non-transitory.

Although not illustrated, computing device 100 may also include adisplay. A display may be any of various display screens. For example,the display may be a display integrated into computing device 100, suchas in the case of smart phones and tablet computers. The display mayalso be a display remotely connected to computing device 100.Furthermore, the display may be a touch sensitive display. The displaymay be used for various purposes, such as to display a user interface,to preview images to be captured by camera 110, and to conduct videocalls with other devices.

Computing device 100 may include additional features as well, beyondthose depicted in FIG. 1. In addition, other devices that maycommunicate with computing device 100, such as in a video call, may havesome or all of these features described with respect to computing device100.

In an embodiment, camera 110 may sense an image. For example, a user maybe positioned in front of camera 110 and camera 110 can capture theuser's image using sensor matrix 112. Camera 110 may sense the image inresponse to a command from the user. Alternatively, the user may beengaged in a video call with another device, and thus camera 110 maysense the image automatically as part of a video stream to be sent tothe other device.

Orientation determiner 120 may determine a first orientation of camera110. The first orientation may be a current orientation of camera 110.The determined orientation of the camera can be used to imply theinherent orientation of an image sensed by camera 110.

The orientation of the camera may be represented in various ways. Forexample, as shown in FIG. 2, the orientation may be determined to beportrait-up 202, portrait-down 204, landscape-right 206, orlandscape-left 208. The representations of these different orientationsare depicted in FIG. 2 as they would appear if displayed on a displayscreen that is in portrait-up orientation. In one example, theportrait-up orientation may correspond to an up-right orientation of asmart phone in which the camera is positioned at the top of the device.As can be seen, only an image with a portrait-up orientation will beproperly oriented in this example when displayed on a smart phone inportrait-up orientation, unless some kind of intervention is performed,such as re-orienting the image.

Each orientation may be considered different and distinct from theothers. Thus, for example, portrait-up orientation may be considereddifferent from portrait-down orientation. Alternatively, thelandscape-right and landscape-left distinction may be maintained and theportrait-up and portrait-down distinction may be ignored, since it maybe a rare occurrence that a user may turn his phone upside down during avideo call. In another example, however, the up, down, left, and rightdistinction may be ignored and the determination may be made simplybased on the portrait or landscape information. However, using only twoorientations—portrait and landscape—may result in a less ideal userexperience since the displayed image may end up being upside down.Nevertheless, for ease of explanation the examples below will bedescribed with reference to just portrait and landscape orientations.

In addition, each distinct orientation may include a range of degreesthat correspond to the particular orientation. For instance, in the caseof four distinct orientations (e.g., portrait-up, portrait-down,landscape-left, and landscape-right), a range of 90 degrees maycorrespond to each orientation. Other range delineations may be used aswell. Also, the orientations may be adapted to a particular type ofdisplay or camera sensor size. For example, a square display may nottechnically have a landscape and a portrait orientation since the aspectratio would be the same for both. Nevertheless, the orientation of thedisplay may be represented by assigning an up, down, left, and rightorientation.

Communication interface 130 may receive a second orientation fromanother computing device. For example, the other computing device may bea device with which computing device 100 is communicating via a videocall, as described above.

The second orientation received from the other computing device maysimply be a default orientation. Alternatively, the second orientationmay correspond to a current orientation of the other computing device.The second orientation may be decided upon in other manners as well.

In addition, there may be an aspect ratio associated with the secondorientation. For instance, if the second orientation is portrait, theassociated aspect ratio may be an aspect ratio that is displayable onthe other computing device in portrait orientation. For example, theassociated aspect ratio may be the ratio of the width of the displayarea to the height of the display area when the display of the otherdevice is in portrait orientation. Similarly, if the second orientationis landscape, the associated aspect ratio may be the ratio of the widthof the display area to the height of the display area when the displayis in landscape orientation. The width and height may be measured inunits, such as the number of pixels along each dimension. In oneexample, an aspect ratio associated with landscape orientation of adisplay can be 16:9, while an aspect ratio associated with portraitorientation of the same display can be 9:16.

The first orientation of camera 110, as determined by orientationdeterminer 120, may be compared to the second orientation received fromthe other device. This comparison can be performed by controller 140.

Image generation module 142 of controller 140 may read values from thesensor matrix in a manner so as to generate image data having the secondorientation if the second orientation is different from the firstorientation. Accordingly, for example, if the first orientation ofcamera 110 is landscape and the second orientation is portrait, then thecontroller may read values from the sensor elements in sensor matrix 112such that the resulting image data represents an image having portraitorientation. Additionally, the resulting image may have the appropriateaspect ratio as well (i.e., the aspect ratio associated with the secondorientation). In the above example, the aspect ratio associated withportrait orientation is 9:16 (instead of 16:9 for landscapeorientation).

Accordingly, image generation module 142 may generate image data havingthe appropriate orientation, as opposed to modifying already generatedimage data (e.g., image data that is stored in memory) to achieve theappropriate orientation. Example processing related to image generationmodule 142 is described in further detail below.

Communication interface 130 may then transmit the generated image datato the other computing device. As a result, the other computing devicemay receive image data that is already in the second orientation andassociated aspect ratio despite camera 110 of computing device 100having been in a different orientation.

FIG. 3 illustrates a configuration 300 including a sensor matrix 310, acontroller 330, and a memory 340, according to an illustrative example.Configuration 300 may be implemented in computing device 100. Forinstance, sensor matrix 310 may correspond to sensor matrix 112 andcontroller 330 may correspond to controller 140. Additionally, theprocessing described below may be implemented by image generation module142.

Sensor matrix 310 is a simplified example of a passive-pixel sensormatrix. A passive-pixel sensor matrix is a sensor configuration in whicheach row of pixels shares an access enable wire and each column ofpixels shares an amplifier. In contrast, an active-pixel sensor matrixis a sensor configuration in which each pixel has its own amplifier. Insome embodiments, an active-pixel sensor matrix may be used.

Sensor matrix 310 can include multiple sensor elements 351-354, 361-364,371-374. In this simplified example, there are 12 sensor elements. Ofcourse, a camera may include hundreds of thousands or millions of sensorelements in a sensor matrix. Each row of sensor elements can beconnected to an access enable line 312 controlled by controller 330.Although not shown, a multiplexer or the like may be used to controlwhich row of sensor elements is enabled by controller 330. Each columnof sensor elements can be connected to an output line 314 which can beconnected to an amplifier 316.

When light shines on a sensor element, such as sensor element 354,during exposure of the sensor matrix, the light is converted into anelectric charge which can be retained by a capacitor inside the sensorelement. This electrical charge can represent the value of a pixel in animage sensed by the sensor matrix. Controller 330 can cause thiselectrical charge to be read from sensor element 354 by asserting accessenable line 312. The electrical charge stored in sensor element 354 canbe transmitted to amplifier 316 where the electrical charge can beamplified. The electrical charge can then be transmitted to ananalog-to-digital converter (ADC) 320 via output line 318. ADC 320 canbe an electronic device that converts an input analog voltage or currentto a digital number proportional to the magnitude of the voltage orcurrent. Accordingly, the electrical charge can be digitized by ADC andtransmitted to controller 330.

Controller 330 may then store the digital signal in memory 340.Controller 330 may store the values from the sensor elements accordingto a particular convention. Controller 330 may implement a defaultconvention. The default convention may correspond to a typicalorientation of sensor matrix 310. For instance, if sensor matrix 310 isimplemented in computing device 100, and the typical orientation ofcomputing device 100 results in sensor elements 354, 364, and 374 beingon top and sensor elements 351, 361, and 371 being on bottom, then thetypical orientation may be considered to be a portrait orientation. Thedefault convention may then account for this typical orientation.

The default convention may associate each particular sensor element witha certain location in an image. For instance, if the most commonorientation of sensor matrix 310 is assumed to be portrait, controller330 may store the values from the sensor elements in memory as if therepresented image is in portrait orientation. For example, controller330 may associate the value from sensor element 354 with a top leftcorner pixel of the image, the value from sensor element 375 with a topright corner pixel of the image, the value from sensor element 351 witha bottom left corner pixel of the image, and the value from sensorelement 371 with a bottom right corner pixel of the image. When theimage data is then read from memory 340 for transmission to anotherdevice, it may be interpreted according to the default convention andtransmitted to the other device in portrait orientation.

When the orientation of sensor matrix 310 changes, however, the sensedimage may actually have a different orientation than portrait. Forinstance, if the orientation of sensor matrix 310 changes to landscape,then the sensed image may have a landscape orientation as well. When theimage data is transmitted to the other device, it may be transmitted asif the underlying image is in portrait orientation even though the imageis in landscape orientation. If the other device is not itself inlandscape orientation, this can result in the image being displayedsideways on the other device, as depicted by image 206 or 208 in FIG. 2.

According to an embodiment, as described above, controller 330 canaccount for a change in orientation of sensor matrix 310. Since a secondorientation may be received from the other device via communicationinterface 130, a first orientation (e.g., the current orientation) ofsensor matrix 310 may be compared with the second orientation (which isthe orientation expected by the other device). If the first orientationof sensor matrix 310 is the same as the second orientation, controller330 can operate according to the default convention. On the other hand,if the first orientation of sensor matrix 310 differs from the secondorientation, controller 330 may read values from the sensor matrix in amanner so as to generate image data having the second orientation.Controller 330 may change the manner of reading values from the sensormatrix in several ways, as described below. A combination of these waysmay also be employed.

Controller 330 may change an order in which the sensor matrix isscanned. For example, instead of asserting access enable line 312 firstand moving down the rows until the bottom row (“bottom” is used relativeto the orientation of FIG. 3), controller 330 may first assert thebottom access enable line and then end at access enable line 312. Inaddition, if sensor matrix 310 were an active-pixel sensor matrix,controller 330 could potentially change the column scan direction.

Controller 330 may change how a location of each sensor element of thesensor matrix is represented. For example, when transferring values fromthe sensor elements into memory 340, controller 330 could assign adifferent location to each sensor element so as to construct a correctlyoriented image. For instance, where the default convention was to assignthe value from sensor element 354 as the top left pixel, controller 330may instead assign the value from sensor element 351 as the top leftpixel. Similarly, the value from sensor element 371 could be assigned asthe bottom left pixel, and so on.

Controller 330 may read values from only a subset of sensor elements ofthe sensor matrix. Since portrait orientation and landscape orientationgenerally have different aspect ratios, controller 330 may read fewervalues than normal in order to construct an image having the correctaspect ratio.

For example, FIG. 4 illustrates a 1280×720 sensor matrix 400 includingmultiple sensor elements. This represents a 16:9 aspect ratio inlandscape orientation and a 9:16 aspect ratio in portrait orientation.As can be seen, the current orientation of sensor matrix 400 islandscape. If, however, the second orientation is portrait, some sensorelements may be ignored in order to generate image data in portraitorientation with the appropriate aspect ratio. Accordingly, image datain portrait orientation with a 9:16 aspect ratio may be generated byreading values from a subset of sensor elements, as indicated by thebolded rectangle. Although this results in an image having a smallerresolution (i.e., 720×405) than sensor matrix 400 is capable ofgenerating, the orientation and aspect ratio are correct. Because of thesmaller resolution, the image data may be stored in memory 340 in amanner that accounts for the smaller resolution. For example, memory 340may have a designated location for storing the resolution/size of theimage data so that it can be read from memory properly. Similarly, theresolution/size of the image data may also be transmitted to the otherdevice so that the image data can be properly interpreted.

FIG. 5 illustrates a sample use case according to an example. Users 510and 520 are engaged in a video call using smart phones 515 and 525. Thevideo call may be conducted and the image data transferred according tovarious standards and technologies such as Session Initiation Protocol(SIP), Real-time Transport Protocol (RTP), Secure Real-time TransportProtocol (SRTP), H.264, H.323, and the like.

FIG. 5 depicts the processing of a sensed image from the perspective ofsmart phone 515, which can be considered the sending device. Inaddition, it is assumed that at the beginning of the call both smartphones were in portrait orientation and agreed to set portraitorientation as an expected orientation for transferred image data.

An expected orientation may be an orientation that a receiving deviceexpects to receive from a sending device. For example, the receivingdevice may be configured to process any received image data as if it isin the expected orientation. In other words, the receiving device mayassume that any received image data is in the expected orientation.Additionally, an expected orientation may be an orientation that asending device assumes that the receiving device is configured toreceive (e.g., when the expected orientation is set as a default withoutexplicit acknowledgement by the receiving device).

In one example, the expected orientation can be agreed upon based uponone of the devices sending portrait orientation as a suggestedorientation to the other device. Accordingly, based on the set expectedorientation, image data sent from smart phone 515 to 525 may beinterpreted by smart phone 525 as in portrait orientation. In addition,an aspect ratio associated with the expected orientation may be set. Inthe case of an expected orientation of portrait, the associated aspectratio may be, for example, 9:16. This aspect ratio may have beenselected for a variety of reasons, such as because it is the aspectratio of the display of smart phone 525 when it is in portraitorientation, for example. The expected orientation and associated aspectratio may be determined in other ways, as well. For instance, theexpected orientation and associated aspect ratio may be default valueshard-coded into a computer program used by one or both smart phones. Ofcourse, in such a case, it could be possible for the smart phones tolater agree to a different orientation and aspect ratio.

As illustrated by arrow 550, however, user 510 has rotated his smartphone 515 to landscape orientation. As a result, the camera on smartphone 515 is now also in landscape orientation. Accordingly, withoutintervention, an image captured by smart phone 515 would be transmittedto smart phone 525 and interpreted by smart phone 525 in portraitorientation. As a result, as depicted in FIG. 2 by images 206 and 208,the image of user 510 would be sideways. This could result in a poorvideo call experience for user 520.

According to this example, however, the orientation of smart phone 515'scamera may be detected by smart phone 515. In particular, smart phone515 may determine that the camera is in landscape orientation. Smartphone 515 may generate image data so that the underlying image 530 iscorrectly oriented (portrait) and has the correct aspect ratio (e.g.,9:16). Examples of these image generation processes were explained abovewith reference to FIGS. 1-4.

The generated image data may be transmitted to smart phone 525 as image540. As can be seen, the image of user 510 is correctly oriented and theaspect ratio corresponds to portrait orientation. Consequently, smartphone 525 may display image 540 without having to detect and change theorientation even though the image sensed by smart phone 515's camera wasin a different orientation.

FIG. 6 is a flowchart illustrating aspects of a method 600 executed by acomputing device for sensing an image and generating image data,according to an example. Although execution of method 600 is describedbelow with reference to the components of computing device 100, othersuitable components for execution of method 600 can be used. Method 600may be implemented in the form of executable instructions stored on amachine-readable medium or in the form of electronic circuitry. Aprocessor, a machine-readable storage medium, other control logic, or acombination thereof can be used to execute method 600.

Method 600 may start at 602 where an image may be sensed. For example,computing device 100 may sense an image using an image sensor, such ascamera 110. Method 600 may proceed to 604 where a first orientation(e.g., the current orientation) of the image sensor may be compared to asecond orientation. Computing device 100 may determine the orientationof the image sensor using orientation determiner 120. For example, anorientation sensor such as an accelerometer may be used to determine theorientation of computing device 100 or camera 110. Alternatively oradditionally, object recognition techniques may be used to detect anobject (e.g., a face) in the image. The orientation of the object may bedetermined and used as a proxy for the orientation of the image and,thus, of the image sensor. The second orientation may be a defaultorientation or an orientation received from another device, for example.

At 606, if the first orientation of the image sensor is the same as(i.e., not different from) the second orientation (NO at 606), method600 may proceed to 608 where values can be read from the image sensor ina first manner so as to generate image data having the firstorientation.

The orientations may be considered the same if they have the sameorientation value. For instance, if portrait and landscape are the onlytwo possible orientations, then the first orientation may be consideredto be the same as the second orientation if they are both portrait orboth landscape.

The first manner may correspond to a default method of processingemployed by controller 140. For example, an example of a default methodthat can correspond to the first manner was described with respect toFIG. 3, where a first scan direction and a default convention forrepresenting/storing image data were used.

If the first orientation of the image sensor differs from the secondorientation (YES at 606), method 600 may proceed to 610 where values canbe read from the image sensor in a second manner so as to generate imagedata having the second orientation.

The orientations may be considered different if they have differentorientation values. For instance, if portrait and landscape are the onlytwo possible orientations, then the first orientation may be consideredto differ from the second orientation if the first orientation isportrait and the second orientation is landscape, or vice versa.

The second manner of reading may differ from the first manner. Forexample, the second manner of reading may include changing a scandirection of the image sensor, reading fewer values than would be readaccording to the first manner of reading, or changing a manner in whichlocations of sensor elements of the image sensor are represented. Thesetechniques are described above in more detail with respect to FIG. 3.

FIG. 7 is a flowchart illustrating aspects of a method 700 executed by acomputing device for conducting a communication session with anotherdevice, according to an example. Although execution of method 700 isdescribed below with reference to the components of computing device100, other suitable components for execution of method 700 can be used.Method 700 may be implemented in the form of executable instructionsstored on a machine-readable medium or in the form of electroniccircuitry. A processor, a machine-readable storage medium, other controllogic, or a combination thereof can be used to execute method 700.

Method 700 may start at 702 and proceed to 704 where a communicationsession may be initiated with another device. For example, computingdevice 100 may request a video call with another device. The video callmay be conducted and the image data transferred according to variousstandards and technologies such as Session Initiation Protocol (SIP),Real-time Transport Protocol (RTP), Secure Real-time Transport Protocol(SRTP), H.264, H.323, and the like.

During set-up of the video call, an orientation may be set as a secondorientation. For example, computing device 100 may set the secondorientation by storing it in memory. In an embodiment, a defaultorientation may be set as the second orientation, such that any imagetransmitted during the call will be assumed to have the defaultorientation. In some cases, an associated aspect ratio may be explicitlyspecified or implied. For example, the aspect ratio to be used maycorrespond to an aspect ratio associated with the image sensor of camera110 when camera 110 is in the second orientation. Alternatively, theaspect ratio may correspond to a display size or aspect ratio of thecomputing device 100 or of the other device when in the secondorientation.

Furthermore, the second orientation and/or aspect ratio may not need tobe specified between the devices. This may be the case if both devicesare running the same computer program, or perhaps if both devices arethe same model. For example, the program may have a hard-coded defaultorientation which may be used. In another example, the orientation andaspect ratio may be communicated and agreed upon between the twodevices. For example, computing device 100, which initiated the call,may select the orientation based on its current orientation andcommunicate the selected orientation to the other device. Alternatively,the other device, which received the request for a call, may select theorientation based on its current orientation and communicate theselected orientation to computing device 100. Additionally, as describedabove, a corresponding aspect ratio may not need to be communicatedbetween the two devices, though it may be in some cases.

At 706, an image may be sensed using an image sensor. For example,computing device 100 may sense an image using camera 110. At 708, afirst orientation (e.g., the current orientation) of the image sensorcan be determined. At 710, it can be determined whether the firstorientation is different from the second orientation. If theorientations are not different (NO at 710), the method may proceed to712, where image data may be generated by reading values from the imagesensor according to a first manner. If the orientations are different(YES at 710), the method may proceed to 714, where image data may begenerated by reading values from the image sensor according to a secondmanner different from the first manner. In either case, method 700 mayproceed to 716 where the generated image data may be transmitted to theother device. For example, computing device 100 may transmit the imageto the other device using communication interface 130. The method maythen proceed to 718, where it can be determined whether thecommunication session is over. If the communication session is not over(NO at 718), the method may proceed to 706 to continue the process. Ifthe communication session is over (YES at 718), the method may proceedto 720, where the process may terminate.

In some embodiments the second orientation and associated aspect ratiomay be changed during the communication session. For example, if theorientation of the other device changes during the communicationsession, it may be beneficial for the other device to communicate thisto computing device 100 so that properly oriented and sized images maybe transmitted to the other device. FIG. 8 is a flowchart illustratingaspects of a method 800 executed by computing device 100 for setting andupdating an orientation received from another device. Although executionof method 800 is described below with reference to the components ofcomputing device 100, other suitable components for execution of method800 can be used. Method 800 may be implemented in the form of executableinstructions stored on a machine-readable medium or in the form ofelectronic circuitry. A processor, a machine-readable storage medium,other control logic, or a combination thereof can be used to executemethod 800.

Method 800 may start at 802 where an indication is received from asecond device regarding the orientation of the display of the seconddevice. For example, computing device 100 may receive this indicationusing communication interface 130. In addition, an indication may alsobe received regarding the associated aspect ratio, although computingdevice 100 may be capable of determining the associated aspect ratiowithout such an indication. At 804, the orientation of the display ofthe second device may be set as the second orientation. Additionally,the aspect ratio may be set as well. The processing of 804 maycorrespond to the processing of 704 in FIG. 7, for example.

At 806, computing device 100 may wait. Waiting may be an active processof computing device 100. For example, a module responsible for settingthe expected orientation and aspect ratio may remain active.Alternatively, waiting may be a passive process of computing device 100.For example, waiting may simply signify that computing device 100 iscapable of receiving an update regarding the second device'sorientation. In particular, upon receiving such an update, computingdevice 100 may call or activate a module responsible for updating theexpected orientation and aspect ratio.

At 808, an indication may be received from the second device that thedisplay orientation of the second device has changed to a neworientation. In addition, an indication may also be received regardingthe aspect ratio associated with the display in the new orientation,although computing device 100 may be capable of determining the newaspect ratio without such an indication.

At 810, the new display orientation of the second device may be set asthe expected orientation. Additionally, the new aspect ratio may also beset. The method may then proceed to 806, where computing device 100 maywait for a new update.

FIG. 9 is a block diagram illustrating aspects of a computing device 900including a machine-readable storage medium 920 encoded withinstructions to generate image data, according to an example. Computingdevice 900 may be, for example, a communication device such as acellular telephone, a smart phone, or a computer. The computer can be atablet computer, a slate computer, a laptop computer, a desktopcomputer, or the like.

Processor 910 may be at least one central processing unit (CPU), atleast one semiconductor-based microprocessor, at least one digitalsignal processor (DSP) such as a digital image processing unit, otherhardware devices or processing elements suitable to retrieve and executeinstructions stored in machine-readable storage medium 920, orcombinations thereof. Processor 910 can include single or multiple coreson a chip, multiple cores across multiple chips, multiple cores acrossmultiple devices, or combinations thereof. Processor 910 may fetch,decode, and execute instructions 922, 924 to implement image generation.As an alternative or in addition to retrieving and executinginstructions, processor 910 may include at least one integrated circuit(IC), other control logic, other electronic circuits, or combinationsthereof that include a number of electronic components for performingthe functionality of instructions 922, 924. Accordingly, processor 910may be implemented across multiple processing units and instructions922, 924 may be implemented by different processing units in differentareas of computing device 900.

Machine-readable storage medium 920 may be any electronic, magnetic,optical, or other physical storage device that contains or storesexecutable instructions. Thus, the machine-readable storage medium maycomprise, for example, various Random Access Memory (RAM), Read OnlyMemory (ROM), flash memory, and combinations thereof. For example, themachine-readable medium may include a Non-Volatile Random Access Memory(NVRAM), an Electrically Erasable Programmable Read-Only Memory(EEPROM), a storage drive, a NAND flash memory, and the like. Further,the machine-readable storage medium 920 can be computer-readable andnon-transitory. Machine-readable storage medium 920 may be encoded witha series of executable instructions for generating images.

The instructions 922, 924, when executed by processor 910 (e.g., via oneprocessing element or multiple processing elements of the processor) cancause processor 910 to perform processes, for example, the processesdepicted in FIGS. 6-8. Furthermore, computing device 900 may be similarto computing device 100 and may have similar functionality and be usedin similar ways, as described above.

An image can be sensed by sensor(s) 930. Sensor(s) 930 may include animage sensor, a camera, or the like, as described above. Sensor(s) 930may also include an orientation sensor, such as an accelerometer. Imageorientation instructions 922 can cause processor 910 to determine anorientation of computing device 900. For example, image orientationinstructions 922 may use sensor(s) 930 to determine the orientationbased on a value from an accelerometer. Additionally or alternatively,image orientation instructions may determine the orientation of theimage using object recognition techniques by determining the orientationof objects in the generated image itself.

Image orientation instructions 922 can also cause processor 910 todetermine a second orientation associated with a second computingdevice. The second computing device could be a computing device withwhich computing device 100 is communicating. Determining the orientationassociated with the second computing device could be accomplished, forexample, by accessing a stored value in memory, such as machine-readablestorage medium 910. Image generation instructions 924 can causeprocessor 910 to read values from the sensor(s) 930 in a manner so as togenerate image data having the second orientation if the orientation ofcomputing device 900 differs from the second orientation. Processor 910may generate the image data according to one or more techniques asdescribed above with reference to FIGS. 3 and 4.

In an example, the orientation of computing device 900 may have anassociated aspect ratio different from an aspect ratio associated withthe second orientation.

In an example, the sensor(s) 930 can include a matrix of sensorelements. The matrix can include a longer dimension and a shorterdimension, as depicted in FIG. 4, for example. Values can be read fromthe sensor in a manner so as to generate image data having the secondorientation by reading only sensor elements that are within an area ofthe matrix defined by the shorter dimension and a portion of the longerdimension. The portion of the longer dimension can be determined basedon the length of the shorter dimension the aspect ratio associated withthe second orientation. For instance, referring to FIG. 4, if the secondorientation is portrait and the associated aspect ratio is 9:16, theportion of the longer dimension can be determined by multiplying thelength of the shorter dimension—720 pixels—by 9 and dividing the resultby 16. Accordingly, the portion of the longer dimension can bedetermined to be 405 pixels.

What is claimed is:
 1. A computing device comprising: a cameracomprising a sensor matrix to sense an image; an orientation determinerto determine a first orientation of the camera; a communicationinterface to receive a second orientation from a second computingdevice; and a controller to read values from the sensor matrix in amanner so as to generate image data having the second orientation if thesecond orientation is different from the first orientation.
 2. Thecomputing device of claim 1, wherein reading values from the sensormatrix in the manner so as to generate image data having the secondorientation comprises changing an order in which the sensor matrix isscanned.
 3. The computing device of claim 1, wherein reading values fromthe sensor matrix in the manner so as to generate image data having thesecond orientation comprises changing how a location of each sensorelement of the sensor matrix is represented.
 4. The computing device ofclaim 1, wherein reading values from the sensor matrix in the manner soas to generate image data having the second orientation comprisesreading values from only a subset of sensor elements of the sensormatrix.
 5. The computing device of claim 1, wherein the generated imagedata has a different aspect ratio than would have been generated by thecamera in the first orientation.
 6. The computing device of claim 1,wherein the communication interface is configured to transmit thegenerated image data to the second computing device.
 7. A methodcomprising: sensing an image using an image sensor of a device;comparing a first orientation of the image sensor to a secondorientation; if the first orientation is the same as the secondorientation, reading values from the image sensor in a first manner soas to generate image data having the first orientation; and if the firstorientation differs from the second orientation, reading values from theimage sensor in a second manner different from the first manner so as togenerate image data having the second orientation.
 8. The method ofclaim 7, further comprising setting the second orientation at abeginning of a communication session between the device and a seconddevice.
 9. The method of claim 8, further comprising: receiving anindication from the second device that an orientation of a display ofthe second device corresponds to a third orientation; and setting thesecond orientation to be equal to the third orientation.
 10. The methodof claim 7, wherein reading values from the image sensor in the secondmanner different from the first manner so as to generate image datahaving the second orientation comprises changing a scan direction of theimage sensor.
 11. The method of claim 7, wherein reading values from theimage sensor in the second manner different from the first manner so asto generate image data having the second orientation comprises readingfewer values than would be read according to the first manner.
 12. Anon-transitory machine-readable storage medium encoded with instructionsexecutable by a processor of a first computing device, themachine-readable medium comprising: instructions to determine a firstorientation of the first computing device using an orientation sensor;instructions to compare the first orientation to a second orientationassociated with a second computing device; and instructions to readvalues from an image sensor in a manner so as to generate image datahaving the second orientation if the first orientation differs from thesecond orientation.
 13. The machine-readable medium of claim 12, whereinthe first orientation is associated with a first aspect ratio differentfrom a second aspect ratio associated with the second orientation. 14.The machine-readable medium of claim 13, wherein the image sensorcomprises a matrix of sensor elements, the matrix comprising a longerdimension and a shorter dimension, and wherein values are read from theimage sensor in the manner so as to generate image data having thesecond orientation by reading only sensor elements that are within anarea of the matrix defined by the shorter dimension and a portion of thelonger dimension.
 15. The machine-readable medium of claim 14, whereinthe portion of the longer dimension is determined based on the shorterdimension and the second aspect ratio.